
import java.awt.Component;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComponent;




/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author tekoraik
 */
public class CITexto {
    ControladorTexto cd;
    VistaTexto vi;
    public CITexto(){
        vi = new VistaTexto(this);
        cd = new ControladorTexto();
        iniciar();
    }
    public void iniciar(){
        vi.visualizar();
    }
    public VistaTexto getVistaTexto(){
        return vi;
    }
    public void setVistaTexto(Component c){
        VistaTexto v = (VistaTexto)c;
        vi=v;
    }
    public void nuevoTexto(){
        vi.nuevoTexto();
    }
    public void seleccionarTodo() {
        vi.seleccionarTodo();
    }
    public void actualizartexto() {
        int n = cd.longitud();
        ArrayList<String> lineas = vi.obtenerLineas();
        for (int i=0; i<n;i++){
            cd.borrarlinea(0);
        }
        for (int i=0; i<lineas.size();i++){
            cd.anadirlinea(lineas.get(i), i);
        }
    }
    public ArrayList<String> getpalinc(CIDiccionario cid, String nombreDic) {
        ArrayList<String> lineas = vi.obtenerLineas();
        ArrayList<String> incorrectas = cd.palabrasinc(nombreDic,lineas, cid.getcont());
        return incorrectas;
    }
    public ArrayList<StringDouble> getkposibles(String palinc, Reglas r, Trie tr, Algoritmo a, int k)throws ExcepcionVacio {
        ArrayList<StringDouble> kposibles = cd.getkposibles(palinc, r, tr, a, k);
        return kposibles;
    }
    public void copiarTexto() {
        vi.copiarTexto();    
    }
    public void pegarTexto() {
        vi.pegarTexto();
        actualizartexto();
    }
    public void cortarTexto() {
        vi.cortarTexto();    
    }
    public void subrayarinc(String s, int rep) {
        vi.subrayar(s, rep);
    }
    public void actualizarLongitud() {
        vi.actualizarLongitud();
    }
    public void cargarTexto(Component cent){
        String ruta = vi.preguntarRuta(cent,"Cargar","Cargar texto");
        if (!ruta.equals("")){
            try {
                ArrayList<String> texto = cd.cargar(ruta);
                vi.anadirTexto(texto,new File(ruta).getName());
            } catch (FileNotFoundException ex) {
                vi.mostrarError("No se encuentra el archivo", cent);
            } catch (IOException ex) {
                vi.mostrarError("Error en la lectura del archivo", cent);
            }
        }
        actualizarLongitud();
    }
    public void salvarTexto(Component cent){
        actualizarLongitud();
        String ruta = vi.preguntarRuta(cent,"Salvar", "Salvar texto");
        if (!ruta.equals("")){
            ArrayList<String> lineas = vi.obtenerLineas();
            actualizartexto();
            try {
                cd.salvar(ruta);
                vi.cambiarTituloPestana(new File(ruta).getName());
            } catch (FileNotFoundException ex) {
                vi.mostrarError("Ruta no valida", cent);
            } catch (IOException ex) {
                vi.mostrarError("Error en el salvado del archivo", cent);
            }
        }
    }
    public void cerrarTexto() {
        vi.cerrarTexto();    
    }
    public void cambiarpaltodo(String inc, String cor) {
        cd.cambiarpaltodo(inc,cor);
        vi.settexto(cd.gettexto());
    }
    public void cambiarpalsola(String inc, String cor, int rep) {
        cd.cambiarpalsola(inc,cor,rep);
        vi.settexto(cd.gettexto());
    }

}
